/*
 * 易族智汇（北京）科技有限公司 版权所有。
 * 未经许可，您不得使用此文件。
 * 官方地址：www.javamall.com.cn
 */
package com.enation.app.javashop.core.handler;

import com.enation.app.javashop.framework.exception.ErrorMessage;
import com.enation.app.javashop.framework.exception.SystemErrorCodeV1;
import com.enation.app.javashop.framework.util.JsonUtil;
import feign.FeignException;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletResponse;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Eop 参数校验处理类
 *
 * @author fengkun
 * @version v1.0
 * @since v7.1.5
 * 2019年12月27日 上午12:00:53
 */
@ControllerAdvice
public class JavashopMicroserviceExceptionHandler {

    /**
     * 处理Feign异常
     */
    @ExceptionHandler(FeignException.class)
    @ResponseBody
    public ErrorMessage parseFeignException(FeignException e, HttpServletResponse response) {
        response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());

        String message = e.getMessage();
        String regex = "(\\{(.*)})";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(message);
        while (matcher.find()) {
            String errorMsg = matcher.group(1);
            return JsonUtil.jsonToObject(errorMsg, ErrorMessage.class);
        }
        return new ErrorMessage(SystemErrorCodeV1.INVALID_REQUEST_PARAMETER, message);
    }

}
